草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

java - 奇怪的 url 编码问题

我有一个奇怪的问题,将加号+urlencoding作为针对API请求的查询参数。API的文档指出:ThedatehastobeintheW3Cformat,e.g.'2016-10-24T13:33:23+02:00'.到目前为止一切顺利,所以我使用此代码(最小化)生成url,使用Spring的UriComponentBuilder:DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX");ZonedDateTimedateTime=ZonedDateTime.now().minus

java - 编辑字段奇怪的高度

在我的应用程序中,我有两种类型的编辑字段。其中一个表现得像单行编辑域,另一个表现得像多行编辑域(editarea)。在此屏幕中,我有一个标题、一个编辑字段和一个编辑区域。当我在editfield中输入一些文本时,它会剪切文本和光标。但是,当我在editarea中输入一些包含尾字符(y,g,q,p)的文本时,editarea的高度正在改变并且editfield表现正常。如果我不输入尾字符,状态不会改变。这是我的编辑区类:publicclassEditAreaFieldextendsHorizontalFieldManager{privatenet.rim.device.api.ui.co

Java 泛型不一致的行为?

为什么第一个方法可以编译,而第二个不能?Set和ImmutableSet.Builder的泛型相同,它们的add方法的类型签名也相同。importjava.util.Set;importjava.util.HashSet;importcom.google.common.collect.ImmutableSet;publicclassF{publicstaticImmutableSettestImmutableSetBuilder(){ImmutableSet.Builderbuilder=ImmutableSet.builder();Numbern=Integer.valueOf(4)

java - SimpleDateFormat 行为不一致

请看下面的一段代码:StringtimeString="1980-01-01T14:00:00+0300";SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");Datedate2=sdf.parse(timeString);//sdf.getCalendar().get(Calendar.ZONE_OFFSET);System.out.println(sdf.format(date2));现在,我所在的国家/地区有+2h偏移量,+1夏令时(目前)。如果我按原样运行这段代码,它将打印1980-01-01T13

Java 改变变量名改变程序行为

我发现了一个场景,其中java程序在重命名变量后表现不同。我知道这实际上不是任何人都会使用的代码,但如果有人知道发生了什么,最好能有一个解释。我在EclipseKepler上用Java1.6试过这个。package_test;publicclassTestClass{publicstaticvoidmain(String...args){ObjecttestClazz$1=newObject(){publicStringtoString(){return"hello";}};TestClass$1test=newTestClass$1();System.out.println(test

java - 使用基于字节的 FileOutputStream 时出现奇怪的符号,基于字符的 FileWriter 是可以的

任务:WriteaJavaapplicationthatcreatesafileonyourlocalfilesystemwhichcontains10000randomlygeneratedintegervaluesbetween0and100000.Trythisfirstusingabyte-basedstreamandtheninsteadbyusingachar-basedstream.Comparethefilesizescreatedbythetwodifferentapproaches.我制作了基于字节的流。运行这个程序后,在fileOutput中我得到了一些奇怪的符号

java - 日志文件中的奇怪消息 @^@^@^@^@^@^@^@^@^@^@^@^@^@^@^

我有一个基于ApacheMina的Java编写的用于网络操作的应用程序服务器。最近我在我的日志文件中遇到了一个奇怪的行为。我注意到日志文件充满了@^@^@^@^@^@^@^@^@^@^@^@^....字符。我的意思是那些意想不到的字符数量巨大,因此日志文件在几个小时内就达到了数百GB!我对这个问题一无所知,几乎不可能用谷歌搜索它。可能是什么原因?这些字符集是否有人熟悉?如果需要,我可以提供有关该应用程序的更多详细信息。提前致谢。 最佳答案 这些字符是nullcharacters(NUL,ASCII值0)在caretnotation.

java - Java中如何理解一个行为会使用静态绑定(bind)还是动态绑定(bind)?

我在底层理解什么是静态(编译时)和动态(运行时)绑定(bind)。我在某种程度上理解为什么知道这一点很重要(例如,静态解析泛型这一事实有助于解释您可以做什么和不能做什么等)。我不明白的是为什么选择是这样或那样的——例如,Java对重载方法使用静态绑定(bind),对重载方法使用动态绑定(bind)。这是为什么?它是一种设计选择,对于了解Java深层功能的人来说是显而易见且不可避免的事情,还是需要学习(而不是理解)的事情? 最佳答案 问题是,在重写的情况下,编译器如何知道在编译期间调用哪个方法。你必须明白这一点,Listlist=li

java - JVM 在内存不足错误期间的行为?列表 s = new ArrayList<String>();

try{for(;;){s.add("Pradeep");}}finally{System.out.println("InFinally");}在tryblock中jvm内存不足,那么jvm在没有内存的情况下如何执行finallyblock?输出:InFinallyExceptioninthread"main"java.lang.OutOfMemoryError:Javaheapspace 最佳答案 大概System.out.println调用比s.add("Pradeep")调用需要更少的内存。例如,如果s是一个ArrayList

java - 一种将参数传递给方法的奇怪方式

我正在浏览ExchangeWebServicesJavaAPI代码并看到了开发人员将参数传递给他们的方法的设计选择。能否帮助解释该技术的好处--方法要处理的类型在传递给方法之前由通用包装类包装,例如,如果方法要处理字符串,则将newParam()传递给Param所在的方法定义如下classParam{privateTparam;publicTgetParam(){returnparam;}publicvoidsetParam(Tparam){this.param=param}}这是来自源代码的片段——该方法适用于HttpWebRequest对象。调用者创建Param的实例,即受Http